package com.xxx.yuedong.community.db.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xxx.yuedong.community.controller.form.FollowForm;
import com.xxx.yuedong.community.pojo.Follow;
import com.xxx.yuedong.mine.pojo.vo.BeFollowVO;
import com.xxx.yuedong.mine.pojo.vo.FansVO;
import com.xxx.yuedong.mine.pojo.vo.FollowVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 关注表的接口
 *
 * @Author YinXi
 * @Versin 1.0.0
 * @Date 2023/8/3
 */
@Mapper
public interface FollowDao extends BaseMapper<Follow> {
    /**
     * 新增关注者id和被关注者id到tb_follow
     */
    int insertFollower(List<FollowForm> followForms);
    /**
     * 根据关注者id和被关注者id查询是否存在该列记录
     */
    List<FollowForm> isToId(FollowForm form);

    /**
     * 根据关注者id和被关注者id删除该条记录
     */
    int deleteFollower(List<FollowForm> forms);
    /**
     * 根据被关注者的id和关注者的id获得对应的Follow
     */
    List<Follow> getFroms(FollowForm form);
    /**
     * 获取当前关注者id的被关注者的数量
     */
    Integer countByToId(Long formId);
    /**
     * 获取当前关注者Id的粉丝数量
     */
    Integer countByFormId(Long formId);

    /**
     * 查询被关注者的关注者列表
      * @param userId
     * @return
     */
    List<BeFollowVO> queryBeFollowList(Long userId);

    /**
     * 查询关注列表
     * @param userId
     * @return
     */
    List<FollowVO> queryFollowList(Long userId);

    /**
     * 查询粉丝列表
     * @param userId
     * @return
     */
    List<FansVO> queryFansList(@Param("userId") Long userId);
}
